home *** CD-ROM | disk | FTP | other *** search
/ Internet Surfer 2.0 / Internet Surfer 2.0 (Wayzata Technology) (1996).iso / pc / text / mac / faqs.263 < prev    next >
Text File  |  1996-02-12  |  28KB  |  644 lines

  1. Frequently Asked Questions (FAQS);faqs.263
  2.  
  3.  
  4.       in the New Uploads file area, named GNUEMACS.ZIP
  5.   NOTE: Use the -d option of [pk]unzip for all .zip archives.  Some sites
  6.     have Demacs lharc'ed.  If you need to find programs to unpack lharc and  -
  7.     zip format archives, Chris Dean <ctdean@talaris.com> points out that you
  8.     should see the comp.compression FAQ, available for FTP:                  !
  9.        /rtfm.mit.edu:pub/usenet/comp.compression/                            !
  10.   Mailing list:
  11.     NOTE: There is no mailing list for Demacs.  However, there is a list
  12.       for DJGPP, which is the environment that Demacs runs in.  Many
  13.       Demacs problems are actually issues with DJGPP.
  14.     DJGPP:
  15.       Subscriptions:
  16.         To: listserv@sun.soe.clarkson.edu
  17.         body: add <your-address> djgpp
  18.         or put `help' in the body.
  19.         If this fails, mail to djgpp-request@sun.soe.clarkson.edu.
  20.       Submissions:
  21.         djgpp@sun.soe.clarkson.edu
  22.   FAQ list:
  23.     Maintainer: Dave Steibel <steibel@cs.umbc.edu>
  24.     Anonymous FTP: algol.cs.umbc.edu:pub/demacs/demacs.faq
  25.  
  26. 123: Freemacs -- a small Emacs for MS-DOS
  27.  
  28.   Author: Russ Nelson <nelson@sun.soe.clarkson.edu>
  29.   Latest released version: 1.6a
  30.   Anonymous FTP:
  31.     /simtel20.army.mil:PD:<MSDOS.FREEMACS> {ange-ftp syntax?}                !
  32.     /grape.ecs.clarkson.edu:pub/msdos/freemacs/                              !
  33.   Via e-mail:
  34.     To: archive-server@sun.soe.clarkson.edu
  35.     body: help
  36.   Via snail mail:
  37.     address: Russell Nelson, 11 Grant St., Potsdam, NY 13676
  38.     Send $15 copying fee, and specify preferred floppy disk format:
  39.       5.25", 360K, or 3.50", 720K
  40.   Mailing lists:
  41.     Subscriptions:
  42.       To: listserv@sun.soe.clarkson.edu
  43.       body: add <your-address> <name-of-list>
  44.       or put `help' in the body.
  45.     List distribution addresses:
  46.       freemacs-announce@sun.soe.clarkson.edu
  47.       freemacs-help@sun.soe.clarkson.edu
  48.       freemacs-workers@sun.soe.clarkson.edu (send bug reports here)
  49.  
  50. 124: Patch -- program to apply "diffs" for updating files
  51.  
  52.   Author: Larry Wall <lwall@netlabs.com>
  53.   Latest version: 2.0 patchlevel 12u8                                        !
  54.     (This is the version that supports the new unified diff format.)
  55.   Anonymous FTP:
  56.     /prep.ai.mit.edu:pub/gnu/patch-2.0.12u8.tar.Z                            !
  57.     /prep.ai.mit.edu:pub/gnu/patch-2.0.12g8.tar.Z  (GNU version)             +
  58.  
  59.  
  60.  
  61. Xref: bloom-picayune.mit.edu gnu.emacs.help:7402 comp.emacs:15251 news.answers:3116
  62. Path: bloom-picayune.mit.edu!enterpoop.mit.edu!snorkelwacker.mit.edu!eff!sol.ctr.columbia.edu!spool.mu.edu!hri.com!noc.near.net!news.bbn.com!bu.edu!bigbird!jbw
  63. From: jbw@bigbird.bu.edu (Joe Wells)
  64. Newsgroups: gnu.emacs.help,comp.emacs,news.answers
  65. Subject: GNU Emacs FAQ (4/5, 125-151): Keybindings/Output
  66. Summary: READ BEFORE POSTING.  A regularly posted list of answers to frequently
  67.          asked questions (FAQs) about GNU Emacs and many Emacs Lisp programs.
  68.          Contains pointers to other resources.  Follow "References:" link for
  69.          more metainfo.
  70. Keywords: gnu emacs faq answers frequently asked questions periodic
  71. Message-ID: <GNU-Emacs-FAQ-4.1992.09.22.011020@bigbird.bu.edu>
  72. Date: 22 Sep 92 01:10:20 GMT
  73. Expires: 21 Nov 92 01:10:20 GMT
  74. References: <GNU-Emacs-FAQ-0.1992.09.22.011020@bigbird.bu.edu>
  75. Sender: news@bu.edu
  76. Reply-To: gnu-emacs-faq-maintainers@bigbird.bu.edu
  77. Followup-To: poster
  78. Organization: GNU's Not UNIX
  79. Lines: 975
  80. Approved: news-answers-request@mit.edu
  81. Supersedes: <GNU-Emacs-FAQ-4.1992.06.28.234430@bigbird.bu.edu>
  82.  
  83. Archive-Name: GNU-Emacs-FAQ/part4
  84. Last-Modified: Mon, 21 Sep 1992 03:20:49 GMT
  85. Last-Posted: Tue, 22 Sep 1992 01:10:20 GMT
  86.  
  87.                     GNU Emacs FAQ: Keybindings/Output
  88.  
  89. If you are viewing this text in a GNU Emacs Buffer, you can type "M-2 C-x $" to
  90. get an overview of just the questions.  Then, when you want to look at the text
  91. of the answers, just type "C-x $".
  92.  
  93. To search for a question numbered XXX, type "M-C-s ^XXX:", followed by a C-r if
  94. that doesn't work, then type ESC to end the search.
  95.  
  96. A `+' in the 78th column means something was inserted on the line.  A `-' means
  97. something was deleted and a `!' means some combination of insertions and
  98. deletions occurred.
  99.  
  100. Full instructions for getting the latest FAQ are in question 22.  Also see the
  101. `Introduction to news.answers' posting in the `news.answers' newsgroup, or send
  102. e-mail to `mail-server@rtfm.mit.edu' with `help' on a body line, or use FTP,
  103. WAIS, or Prospero to rtfm.mit.edu.
  104.  
  105.  
  106.  
  107. Changing Key Bindings and Handling Key Binding Problems
  108.  
  109. 125: How do I bind keys (including function keys) to commands?
  110.  
  111.   1. Find out what character sequence is generated by the keystroke sequence
  112.      you wish to bind to a command.  See question 129 for how to do this.
  113.      Keep in mind that the character sequences generated by a keystroke
  114.      sequence varies from one terminal to another.  You may also get
  115.      different results depending on what type of machine you are running on
  116.      (see question 128).  For example, these keystrokes may generate these
  117.      character sequences:
  118.  
  119.        F1        ---> ESC [ 2 2 4 z
  120.        Shift-R10 ---> ESC O t
  121.        L7        ---> ESC [ 3 1 ~
  122.        Remove    ---> C-@
  123.  
  124.   2. Figure out what the Emacs Lisp syntax is for this character sequence.
  125.      Inside an Emacs Lisp string, RET, LFD, DEL, ESC, SPC, and TAB are
  126.      specified with `\r', `\n', `\C-?', `\e', ` ', and `\t'.  C-x is
  127.      specified by `\C-x'.  M-x is specified the same was as "ESC x".
  128.      (Control characters may also be specified as themselves, but I don't
  129.      recommend it.)  An Emacs Lisp string begins and ends with the double
  130.      quote character, `"'.  Here are some examples:
  131.  
  132.        ESC [ D       ---> "\e[D"
  133.        ESC [ 2 2 7 z ---> "\e[227z"
  134.        ESC [ 1 8 ~   ---> "\e[18~"
  135.        C-M-r         ---> "\e\C-r"
  136.  
  137.   3. If some prefix of the character sequence is already bound, you must
  138.      unbind it by binding it to `nil'.  For example:
  139.  
  140.        (global-set-key "\e[" nil)
  141.  
  142.   4. Pick a command to bind your key sequence to.  A command can be a
  143.      "symbol" with a function definition, or a "lambda list", or a string
  144.      (which is treated as a macro).  For example:
  145.  
  146.        (global-set-key "\e[D" 'backward-char)
  147.        (global-set-key "\e[227~" "\exgoto-line\r") ; macro
  148.  
  149.   See `Key Bindings' and `Rebinding' in the online manual.
  150.  
  151.   In Emacs 19 (including Lucid Emacs), you can bind function key F24 like    +
  152.   this:                                                                      +
  153.                                                                              +
  154.     (global-set-key 'f24 'some-command)                                      +
  155.  
  156. 126: Why does Emacs say `Key sequence XXX uses invalid prefix characters'?
  157.  
  158.   A prefix of the character sequence you were trying to bind was already
  159.   bound.  Usually, the sequence is "ESC [", in which case you should
  160.   evaluate this form first:
  161.  
  162.     (define-key esc-map "[" nil)
  163.  
  164.   NOTE: By default, "ESC [" is bound to backward-paragraph, and if you do
  165.   this you will lose this key binding.  For most people, this is not a
  166.   problem.
  167.  
  168.   See question 125.
  169.  
  170. 127: Why doesn't this [terminal or window-system setup] code work in my
  171.  .emacs file, but it works just fine after Emacs starts up?
  172.  
  173.   This is because you're trying to do something in your .emacs file that
  174.   needs to be postponed until after the terminal/window-system setup code
  175.   is loaded.  This is a result of the order in which things are done
  176.   during the startup of Emacs.  For more details see question 135.
  177.  
  178.   In order to postpone the execution of Emacs Lisp code until after the
  179.   terminal/window-system setup, set the value of the variable
  180.   term-setup-hook or window-setup-hook to be a function which does what
  181.   you want.
  182.  
  183.   See etc/OPTIONS for a complete explanation of what Emacs does every time
  184.   it is started.
  185.  
  186.   Here is a simple example of how to set term-setup-hook:
  187.  
  188.     (setq term-setup-hook
  189.       (function
  190.        (lambda ()
  191.          (cond ((string-match "\\`vt220" (or (getenv "TERM") ""))
  192.             ;; Make vt220's "Do" key behave like M-x:
  193.             (define-key CSI-map "29~" 'execute-extended-command))
  194.            ))))
  195.  
  196. 128: How do I use function keys under X Windows?
  197.  
  198.   This depends on whether you are running Emacs inside a terminal emulator
  199.   window, or whether you are allowing Emacs to create its own X window.
  200.   You can tell which you are doing by noticing whether Emacs creates a new
  201.   window when you start it.
  202.  
  203.   If you are running Emacs inside a terminal emulator window, then it
  204.   behaves exactly as it does on any other tty.  In this case, for function
  205.   keys to be useful, they must generate character sequences that are sent
  206.   to the programs running inside the window as input.  The `xterm' program
  207.   has two different sets of character sequences that it generates when
  208.   function keys are pressed, depending on the sunFunctionKeys X resource
  209.   and the -sf and +sf command line options.  (To find out what these key
  210.   sequences are, see question 129.)  In addition, with xterm,
  211.   you can override what key sequence a specific function key (or any other
  212.   key) will generate with the `translations' resource.  This, for example:
  213.  
  214.     XTerm.VT100.Translations: #override \
  215.       <KeyPress>F1: string(0x1b) string("[xyzzy")
  216.  
  217.   makes the function key F1 generate the character sequence "ESC [xyzzy".
  218.  
  219.   On the other hand, if Emacs is managing its own X window, the following
  220.   description applies.  Emacs receives `KeyPress' events from the X server
  221.   when a key is pressed while the keyboard focus is in its window.  The
  222.   KeyPress event contains an X "keysym" code, which is simply an arbitrary
  223.   number corresponding to the name of the keysym, and information on which
  224.   "modifiers" such as `control' and `shift' are active.  For example, the
  225.   `Tab' keysym is 0xff09.  (Generally, a key on the keyboard will generate a
  226.   keysym whose name is the same as the label on the key, ie. the `Tab' key
  227.   will normally generate the `Tab' keysym.  This can be changed with the
  228.   xmodmap program.)  Emacs recognizes all the keysyms that correspond to
  229.   standard ASCII characters and internally uses the ASCII character instead.
  230.  
  231.   (WARNING: I am about to describe a gross, disgusting hack to you, have
  232.   your barf bag ready.)
  233.  
  234.   When Emacs receives the X keysym of one of the arrow keys, it behaves
  235.   the same as if it had received a letter key with the control modifier
  236.   down as follows (this is hard-coded):
  237.  
  238.     Up    becomes C-p
  239.     Down  becomes C-n
  240.     Right becomes C-f
  241.     Left  becomes C-b
  242.  
  243.   The way Emacs treats other keysyms depends on what kind of machine it was
  244.   compiled on.  The type of the display machine is irrelevant!  Function
  245.   keys are mapped internally to escape sequences, while other keys are
  246.   completely ignored.
  247.  
  248.   1. If compiled on a Sun, Emacs recognizes these X keysyms that
  249.      are normally on a Sun keyboard:
  250.  
  251.        F1 through F9
  252.        L1 through L10 (same as F11 through F20)
  253.        R1 through R15 (same as F21 through F35)
  254.      (The keys labelled R8, R10, R12, and R14 usually are mapped to the
  255.       X keysyms Up, Left, Right, and Down.)
  256.        Break (the `Alternate' key is given this keysym)
  257.  
  258.      These keys work like Sun function keys.  When Emacs recieves the
  259.      keysym, it will internally use character sequences that look like "ESC
  260.      [ ### z", where ### is replaced by a number.  The character sequences
  261.      are identical to those generated by Sun's keyboard under SunView.  Any
  262.      function key not listed above generates "ESC [ - 1 z".
  263.  
  264.      In order to use these key sequences, they should be bound to commands
  265.      using the standard key binding methods, just as if Emacs were running
  266.      on a regular terminal.
  267.  
  268.      WARNING: F11 and L1 are the same keysym in X, as are F12 and L2, etc.
  269.      {Yes, this is stupid.  Complain to the X consortium.}
  270.  
  271.   2. If not compiled on a Sun, the function keys will appear to Emacs in a
  272.      way remarkably similar to the keys of a DEC LK201 keyboard (used on
  273.      some VT series terminals).  These X keysyms will be recognized:
  274.  
  275.        F1 through F20
  276.        Help (treated same as F15)
  277.        Menu (treated same as F16, is the LK201 `Do' key)
  278.        Find
  279.        Insert (LK201 `Insert Here' key)
  280.        Select
  281.        Prior (LK201 `Prev Screen' key *** ONLY IN 18.58 AND LATER ***)
  282.        Next (LK201 `Next Screen' key *** ONLY IN 18.58 AND LATER ***)
  283.  
  284.      And finally, the LK201 key labelled `Remove' (or `Delete') is often
  285.      mapped to the Delete keysym which generates the DEL character (C-?)
  286.      instead of the key sequence given by the LK201 `Remove' key.  It may
  287.      also be mapped to some other keysym, such as `_Remove', in which case
  288.      you can't use it from within Emacs at all.
  289.  
  290.      Each function key will be internally converted to a character sequence
  291.      that looks like "ESC [ ## ~", where ## is replaced by a number.  The
  292.      character sequences are identical to those generated by a LK201
  293.      keyboard.  Any function key not listed above generates "ESC [ - 1 ~".
  294.  
  295.   For the complete list of the numbers which are generated by the function
  296.   keys, look in the file src/x11term.c at the definitions of the function
  297.   stringFuncVal.
  298.  
  299.   If you are running Emacs on a Sun machine, even if your X display is
  300.   running on a non-Sun machine (eg., an X terminal), you get the setup
  301.   described above for Suns.  The determining factor is what type of
  302.   machine Emacs is running (was compiled) on, not what type of machine
  303.   your X display is on.
  304.  
  305.   If you have function keys not listed above on your keyboard, you can use
  306.   `xmodmap' to change their keysym assignments to get keys that Emacs will
  307.   recognize, but that may screw up other programs.
  308.  
  309.   X resources are not used by Emacs to affect the key sequences generated.
  310.   In particular, there are no X key "translations" for Emacs.
  311.  
  312.   If you have function keys not listed above and you don't want to use
  313.   xmodmap to change their names, you might want to make a modification to
  314.   your Emacs.  Johan Vromans <jv@mh.nl> has made available a patch for Emacs
  315.   that adds the x-rebind-key function of Epoch to Emacs 18.58.  This allows
  316.   another layer of key rebinding before Emacs even sees the keys, and in
  317.   this layer you can rebind all of the keys and modifier combinations as
  318.   well.
  319.  
  320.   Anonymous FTP:
  321.     /ftp.eu.net:gnu/emacs/FP-Xfun.Z                                          +
  322.     /ftp.urc.tue.nl:pub/tex/emacs/FP-Xfun                                    +
  323.  
  324.   Johan Vromans explains what this buys for you:
  325.  
  326.     After implementing this, all keyboard keys can be configured to send
  327.     user definable sequences, eg.,
  328.  
  329.       (x-rebind-key "KP_F1" 0 "\033OP")
  330.  
  331.     This will have the keypad key PF1 send the sequence "ESC O P", just like
  332.     an ordinary VT series terminal.
  333.  
  334. 129: How do I tell what characters my function or arrow keys emit?
  335.  
  336.   Use this function by Randal L. Schwartz <merlyn@iwarp.intel.com>:
  337.  
  338.     (defun see-chars ()
  339.       "Displays characters typed, terminated by a 3-second timeout."
  340.       (interactive)
  341.       (let ((chars "")
  342.         (inhibit-quit t))
  343.     (message "Enter characters, terminated by 3-second timeout.")
  344.     (while (not (sit-for 3))
  345.       (setq chars (concat chars (list (read-char)))
  346.         quit-flag nil))        ; quit-flag maybe set by C-g
  347.     (message "Characters entered: %s" (key-description chars))))
  348.  
  349.   Alternatively, use the "C-h l" view-lossage command, which will display
  350.   the last 100 characters Emacs has seen in its input stream.  Kevin
  351.   Gallagher <kgallagh@digi.lonestar.org> suggests typing some unique string
  352.   like "wxyz", typing the key in question, then typing "C-h l".  The
  353.   characters that appear between "wxyz" and "C-h l" were generated by the
  354.   key.
  355.  
  356. 130: How do I set the X key "translations" for Emacs?
  357.  
  358.   Sorry, you can't; there are no "translations" to be set.  Emacs is not
  359.   written using the Xt library.  The only way to affect the behavior of keys
  360.   within Emacs is through `xmodmap' (outside Emacs) or `define-key' (inside
  361.   Emacs).
  362.  
  363. 131: How do I handle C-s and C-q being used for flow control?
  364.  
  365.   C-s and C-q are used in the XON/XOFF flow control protocol.  This screws
  366.   up Emacs because it binds these characters to commands.  Also, by default
  367.   Emacs will not honor them as flow control characters and may overwhelm
  368.   output buffers.  Sometimes, intermediate software using XON/XOFF flow
  369.   control will prevent Emacs from ever seeing C-s and C-q.
  370.  
  371.   Possible solutions:
  372.  
  373.   * Disable the use of C-s and C-q for flow control.
  374.  
  375.     You need to determine what is the cause of the flow control.
  376.  
  377.     * your terminal
  378.  
  379.       Your terminal may use XON/XOFF flow control to have time to display
  380.       all the characters it receives.  For example, VT series terminals do
  381.       this.  It may be possible to turn this off from a setup menu.  For
  382.       example, on a VT220 you may select `No XOFF' in the setup menu.  This
  383.       is also true for some terminal emulation programs on PCs.
  384.  
  385.       When you turn off flow control at the terminal, you will also need to
  386.       turn it off at the other end, which might be at the computer you are
  387.       logged in to or at some terminal server in between.
  388.  
  389.       If you turn off flow control, characters may be lost; using a printer
  390.       connected to the terminal may fail.  You may be able to get around
  391.       this problem by modifying the `termcap' entry for your terminal to
  392.       include extra NUL padding characters.
  393.  
  394.     * a modem
  395.  
  396.       If you are using a dialup connection, the modems may be using XON/XOFF
  397.       flow control.  I don't know how to get around this.
  398.  
  399.     * a router or terminal server
  400.  
  401.       Some network box between the terminal and your computer may be using
  402.       XON/XOFF flow control.  It may be possible to make it use some other
  403.       kind of flow control.  You will probably have to ask your local
  404.       network experts for help with this.
  405.  
  406.     * tty and/or pty devices
  407.  
  408.       If your connection to Emacs goes through multiple tty and/or pty
  409.       devices, they may be using XON/XOFF flow control even when it is not
  410.       necessary.
  411.  
  412.       Eirik Fuller <eirik@theory.tn.cornell.edu> writes:
  413.  
  414.         Some versions of `rlogin' (and possibly telnet) do not pass flow
  415.         control characters to the remote system to which they connect.  On
  416.         such systems, Emacs on the remote system cannot disable flow control
  417.         on the local system.  Sometimes `rlogin -8' will avoid this problem.
  418.  
  419.         One way to cure this is to disable flow control on the local host
  420.         (the one running rlogin, not the one running rlogind) using the stty
  421.         command, before starting the rlogin process.  On many systems, `stty
  422.         start u stop u' will do this.
  423.  
  424.         Some versions of `tcsh' will prevent even this from working.  One
  425.         way around this is to start another shell before starting rlogin,
  426.         and issue the stty command to disable flow control from that shell.
  427.  
  428.       Use `stty -ixon' instead of `stty start u stop u' on some systems.
  429.  
  430.   * Make Emacs speak the XON/XOFF flow control protocol.
  431.  
  432.     You can make Emacs treat C-s and C-q as flow control characters by
  433.     evaluating this form:
  434.  
  435.       (set-input-mode nil t)
  436.  
  437.     If you are fixing this for yourself, simply put the form in your .emacs
  438.     file.  If you are fixing this for your entire site, the best place to
  439.     put it is unclear.  I don't know if this has any effect when used in
  440.     lisp/site-init.el when building Emacs; I've never tried that.  {Can
  441.     someone tell me whether it works?}  Putting things in users' .emacs files
  442.     has a number of problems.
  443.  
  444.     Putting this form in lisp/default.el has the problem that if the user's
  445.     .emacs file has an error, this will prevent lisp/default.el from being
  446.     loaded and Emacs may be unusable for the user, even for correcting their
  447.     .emacs file (unless they're smart enough to move it to another name).  A
  448.     possible solution is to initially disable C-s and C-q by setting
  449.     keyboard-translate-table in lisp/site-init.el, either with swap-keys
  450.     (see question 136) or with the following form:
  451.  
  452.       ;; by Roger Crew <crew@cs.stanford.edu>:
  453.       (setq keyboard-translate-table
  454.             "\C-@\C-a\C-b\C-c\C-d\C-e\C-f\C-g\C-h\C-i\C-j\C-k\C-l\C-m\C-n\C-o\C-p\C-^\C-r\C-\\\C-t\C-u\C-v\C-w\C-x\C-y\C-z\C-[\C-s\C-]\C-q\C-_")
  455.  
  456.     This will at least prevent Emacs from being confused by the flow control
  457.     characters, even if lisp/default.el cannot be loaded.  Then, in
  458.     lisp/default.el, enable XON/XOFF flow control with set-input-mode.
  459.  
  460.   For further discussion of this issue, read the file PROBLEMS in the
  461.   Emacs distribution.
  462.  
  463. 132: How do I use commands bound to C-s and C-q (or any key) if these keys
  464.  are filtered out?
  465.  
  466.   I suggest swapping C-s with C-\ and C-q with C-^:
  467.  
  468.     (swap-keys ?\C-s ?\C-\\)
  469.     (swap-keys ?\C-q ?\C-^)
  470.  
  471.   See question 136 for the implementation of swap-keys.  This method
  472.   has the advantage that it simultaneously swaps the characters everywhere
  473.   throughout Emacs, while just switching the keybindings will miss important
  474.   places where the character codes are stored (eg., the search-repeat-char
  475.   variable, major mode keymaps, etc.).
  476.  
  477.   To do this for an entire site, you may want to swap the keys in
  478.   lisp/default.el.  If only some of your users are connecting through
  479.   XON/XOFF flow-controlled connections, you will want to do this
  480.   conditionally.  I suggest pre-swapping them in lisp/site-init.el when
  481.   Emacs is built, and then in lisp/default.el, if it is determined to be
  482.   safe, they can be reenabled (being careful not to screw up any other key
  483.   mappings users might have established using keyboard-translate-table).
  484.   See question 131 for an easy way to pre-swap these keys.
  485.  
  486.   WARNING: If you do this for an entire site, the users will be confused by
  487.   the disparity between what the documentation says and how Emacs actually
  488.   behaves.
  489.  
  490. 133: Why does the `BackSpace' key invoke help?
  491.  
  492.   The BackSpace key (on every keyboard I've used) generates ASCII code 8.
  493.   C-h sends the same code.  In Emacs by default C-h invokes help-command.
  494.   This is intended to be easy to remember since the first letter of "help"
  495.   is "h".  The easiest solution to this problem is to use C-h (and
  496.   BackSpace) for help and DEL (the Delete key) for deleting the previous
  497.   character.
  498.  
  499.   For many people this solution may be problematic:
  500.  
  501.   * They normally use BackSpace outside of Emacs for deleting the previous
  502.     character typed.  This can be solved by making DEL be the command for
  503.     deleting the previous character outside of Emacs.  This command will do
  504.     this on many Unix systems:
  505.  
  506.       stty erase '^?'
  507.  
  508.   * The person may prefer using the BackSpace key for deleting the previous
  509.     character because it is more conveniently located on their keyboard or
  510.     because they don't even have a separate Delete key.  In this case, the
  511.     BackSpace key should be made to behave like Delete.  There are several
  512.     methods.
  513.  
  514.     * Under X Windows, the easiest solution is to change the BackSpace key
  515.       into a Delete key like this:
  516.  
  517.         xmodmap -e "keysym BackSpace = Delete"
  518.  
  519.     * Some terminals (eg., VT3## terminals) allow the character generated by
  520.       the BackSpace key to be changed from a setup menu.
  521.  
  522.     * You may be able to get a keyboard that is completely programmable.
  523.  
  524.     * Under X or on a dumb terminal, it is possible to swap the BackSpace
  525.       and Delete keys inside Emacs:
  526.  
  527.         (swap-keys ?\C-h ?\C-?)
  528.  
  529.       See question 136 for the implementation of swap-keys.
  530.  
  531.     * Another approach is to switch keybindings and put help on "C-x h"
  532.       instead:
  533.  
  534.         (global-set-key "\C-h" 'delete-backward-char)
  535.         (global-set-key "\C-xh" 'help-command) ; override mark-whole-buffer
  536.  
  537.       Other popular key bindings for help are M-? and "C-x ?".
  538.  
  539.       WARNING: Don't try to bind DEL to help-command, because there are many
  540.       modes that have local bindings of DEL that will interfere.             -
  541.  
  542. 134: Why doesn't Emacs look at the stty settings for Backspace vs. Delete?
  543.  
  544.   Good question!
  545.  
  546. 135: Why don't the arrow keys work?
  547.  
  548.   When Emacs starts up, it doesn't know anything about arrow keys at all
  549.   (except when running under X, see question 128).  During the process of
  550.   starting up, Emacs will load a terminal-specific initialization file for
  551.   your terminal type (as determined by the environment variable TERM), if
  552.   one exists.  This file has the responsibility for enabling the arrow keys.
  553.  
  554.   There are several things that can go wrong:
  555.  
  556.   1. There is no initialization file for your terminal.
  557.  
  558.      You can determine this by looking in the lisp/term directory.  If your
  559.      terminal type (as determined by the TERM environment variable) is
  560.      xxx-yy-z, then the first of these files in the lisp/term directory will
  561.      be loaded as the terminal-specific initialization file: xxx-yy-z.el,
  562.      xxx-yy.el, or xxx.el.
  563.  
  564.      There are two major cases of this problem:
  565.  
  566.      * Your terminal type is very similar to one that has an init file.
  567.  
  568.        In this case, there are several techniques suggested by Colin Jensen
  569.        <cjensen@ampex.com>, Ben Liblit <Liblit@cs.psu.edu>, and Marc
  570.        Auslander <marc@watson.ibm.com>:
  571.  
  572.        A. Add a symbolic link in lisp/term for your terminal type that
  573.           points to the similar type.  For example, you could make VT102
  574.           terminals work with this command:
  575.  
  576.             ln -s vt100.el vt102.el
  577.  
  578.           This fixes things for everyone on the system who uses the terminal
  579.           type.
  580.  
  581.        B. If you can't do the solution in part A, you can add code to your
  582.           term-setup-hook that loads the correct file like this:
  583.  
  584.             (setq term-setup-hook
  585.                   (function
  586.                    (lambda ()
  587.                      (cond ((equal "vt102" (or (getenv "TERM") ""))
  588.                             (load (concat term-file-prefix "vt100")))
  589.                            (;; Code for other terminal types goes here ...
  590.                             )))))
  591.  
  592.        C. If you use `tset' to set your TERM environment variable when you
  593.           login, you can use the `-m' switch to tell tset to use a terminal
  594.           type known by Emacs instead of another similar one.  For example,
  595.           specifying this:
  596.  
  597.             tset ... -m 'dec-vt220:vt220' ...
  598.  
  599.           will make tset say you are on a `vt220' instead of a `dec-vt220'.
  600.  
  601.        D. Interactively, you can type "M-x load-library RET term/vt100" to
  602.           load the terminal-specific initialization files for VT100
  603.           terminals.
  604.  
  605.      * Your terminal type is not similar to one that has an init file.
  606.  
  607.        One can be made for your terminal, or you can just add code to your
  608.        own .emacs to handle this problem for yourself.  For example, if your
  609.        terminal's arrow keys send these character sequences:
  610.  
  611.          Up:    ESC [ A
  612.          Down:  ESC [ B
  613.          Right: ESC [ C
  614.          Left:  ESC [ D
  615.  
  616.        then you can bind these keys to the appropriate commands with code in
  617.        your .emacs like this:
  618.  
  619.          (setq term-setup-hook
  620.                (function
  621.                 (lambda ()
  622.                   (cond ((string-match "\\`xyzzy" (or (getenv "TERM") ""))
  623.                          ;; First, must unmap the binding for left bracket
  624.                          (or (keymapp (lookup-key global-map "\e\["))
  625.                              (define-key global-map "\e\[" nil))
  626.                          ;; Enable terminal type xyzzy's arrow keys:
  627.                          (define-key global-map "\e\[A" 'previous-line)
  628.                          (define-key global-map "\e\[B" 'next-line)
  629.                          (define-key global-map "\e\[C" 'forward-char)
  630.                          (define-key global-map "\e\[D" 'backward-char))
  631.                         ((string-match "\\`abcde" (or (getenv "TERM") ""))
  632.                          ;; Do something different for terminal type abcde
  633.                          ;; .....
  634.                          )))))
  635.  
  636.      NOTE: You may have to restart Emacs to get changes to take effect.
  637.  
  638.      NOTE: Your arrow keys may send sequences beginning with "ESC O" when
  639.      Emacs is running, even if they send sequences beginning with "ESC [" at
  640.      all other times.  This is because Emacs uses any command there may be
  641.      in your terminal's termcap entry for putting the terminal into
  642.      "Application Keypad Mode".  Just map these sequences the same way as
  643.      above.
  644.